Weekend of (Perl) Code

Shlomi Fish on 2006-07-15T07:37:09

While I'm working with PHP now at work, I still like to do some Perl hacking once in a while. As it turned out, this weekend (an extended one due to the fact we were given Thursday off because of Tzom Tammuz.), I spent a lot of time working on Perl and Perl-related projects. This entry aims to summarise what I've done so far, and what I'd like to do in the remains of the weekend and the upcoming days.

I uploaded 4 modules to the CPAN this weekend:

  1. WWW-Search-MSN (version 0.0102). This fixed a small Build.PL bug where Encode was not mentioned in the dependencies, which caused "./Build test" to silently fail on perl 5.6.1 and below. (I always thought Encode was part of the core since perl 5.6.0, but I guess I had been wrong).

    This bug was reported by purdy who's now credited in the Changes file (but not in the POD yet). There's another bug in the RT, but I may have fixed it in the process of getting W-S-MSN to recognise https:// URLs.

  2. HTML-Latemp-GenMakeHelpers - this Latemp-assisting module was enhanced a bit. I used to use the wml interpreter with redirection (> $@) but this had a tendency to create empty files upon failure. Now it's more robust. While the make commands are written in shell, I had to use a File::Spec->rel2abs() invocation for getting the absolute location. Maybe there's a better way to do it in pure bash.

  3. Error has been updated to version 0.17. A lot of the enhancements in it are the work of LeoNerd, which was given commit access to the Subversion repository. Other enhancements include an examples directory with some useful examples. (by LeoNerd and me).

  4. Last but not least is File-Find-Object, version 0.0.3, which as mentioned in this journal earlier is a File::Find replacement with some advantages like being instantiable and the fact that the directory tree traversal scan can be stopped in the middle. This version has some cleanups, a more comprehensive test suite (with some meta-tests for the testing API ;-)), etc.

    It aims to be the last release before we convert the code to use File::Spec, as well as clean up the internals. At the moment File::Find::Object::internal is derived from File::Find::Object, and each of them contain one of the other. I told the original maintainer that I'd like to convert it into one class and one object, possibly with some helper objects of completely different classes.

But CPAN was not the only thing I worked on this weekend. I also started working on the site of a top-secret Perl distribution (ssshh! Don't tell anyone). I don't mind sharing this idea, because ideas are cheap, but I'd like to make a more official announcement when I have something to show for. (such as packages for one Linux distribution).

I also did some wiki work on http://perl.net.au/ and the Wikipedia. Another plan of mine was to start seriously learning Common Lisp this weekend. However, Lisp in a Box refused to build cleanly on my Linux machine. I guess I'll have to install XEmacs, SLIME and CLisp or SBCL the "hard way". I wonder if SLIME and one of Emacs' vi-emulation modes can play together well.

Finally, what would be a weekend without IRC? On #perlcafe we discussed Politics, religion, Julian Jaynes' Theory of the emergence of Human sentience, history and archaelogy and everything in between. Someone there seemed to have understood what I wanted to say (about animals not being sentient and about humans not having sentience until roughly ~1,000 B.C.) almost right away. Either he's more open for this, or I'm getting better at explaining this.

On #perl, we discussed many things with most of the regulars. One thing we touched upon was whether C has its place (buu does not seem to think so, but trying to convince him is futile), and also whether the fact that in perl doing $myobj->method_name() without knowing anything about $myobj and the interpreter just does the "right" thing is good or not. In C++, for example, it's impossible, yet some people feel it's better from "software engineery" point-of-view.

Finally, sili, mjl69 and I have decided to form the perl-lovers-who-are-forced-to-use-PHP-against-their-will support group:
-- "Hi! My name is Shlomi, and I'm getting paid to write PHP code."
-- "Hello Shlomi! We all love you!"

In any case - cheers!


your top secret perl distribution

dagolden on 2006-07-15T12:24:42

As you work on the "top secret" distribution, keep an eye out for Perl::Dist. Right now it's a terribly hacky conversion of scripts to a module and far too hardcoded towards Vanilla/Strawberry Perl builds. It needs to be rebuilt from the ground up, but conceptually, it's going to be going in a direction that should be useful to you.

In working on Vanilla and Strawberry, I can say that it's an amazing, gleefully cool feeling to type:

> perl bin\build_all.pl

And then watch 100 Meg of Perl plus compiler plus modules download and assemble themselves into a working perl distribution.

(Er, except for the occasionally annoying "monkey hit the button" moments in various Makefile.PL's)

Re:your top secret perl distribution

Shlomi Fish on 2006-07-20T19:50:18

Thanks for the tip.

In any case, my intention in Fullperl is to individually package each Perl CPAN module in its own system distribution's package, with external dependencies on the other (C-based, etc.) packages in the system's distribution. So one can still manage them using apt-get on debian, urpmi on Mandriva, yum on Red Hat, emerge on Gentoo, and so forth.

I'll make a more official announcement when I have something more substantial to show for.

Finally, I think that Makefile.PL has a standard flag or env vars to disable asking such interactive questions, which most scripts should respect. Another alternative is to use Expect.